package dmsxl.tanxin;

import java.util.Arrays;

/**
 * Author: Zhang Dongwei
 * Date: 2023/7/17 21:47
 * 假设你是一位很棒的家长，想要给你的孩子们一些小饼干。但是，每个孩子最多只能给一块饼干。
 *
 * 对每个孩子 i，都有一个胃口值 g[i]，这是能让孩子们满足胃口的饼干的最小尺寸；并且每块饼干 j，都有一个尺寸 s[j] 。如果 s[j] >= g[i]，我们可以将这个饼干 j 分配给孩子 i ，这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子，并输出这个最大数值。
 */
public class tx2_455 {

    public static void main(String[] args) {
        tx2_455 tx2_455 = new tx2_455();
        int[] g = {1, 2};
        int[] s = {1, 2, 3};
        int res = tx2_455.findContentChildren(g, s);
        System.out.println(res);
    }

//    自己写的，效果不好
    public int findContentChildren1(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int count = 0;
        int[] used = new int[s.length];
        for (int i = 0; i < g.length; i++){
            for (int j = 0; j < s.length; j++){
                if (s[j] >= g[i] && used[j] == 0){
                    count ++;
                    used[j] = 1;
                    break;
                }
            }
        }
        return count;
    }

//    代码随想录答案
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int count = 0;
        int index = s.length - 1;
        for (int i = g.length - 1; i >= 0; i--){
            if (index >= 0 && s[index] >= g[i]){
                count++;
                index --;
            }
        }
        return count;
    }
}
